#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>

#include "cola.h"
int main()
{
	key_t llave;
	int idcola;
	tipo_mensaje mensaje;
	int i;
	llave=ftok(".",'c');
	if (llave<0)
	{
		perror("Error al obtener la llave \n");
		exit(EXIT_FAILURE);
	}
	else
	{
		printf("Se ha obtenido la llave de acceso a la cola de mensajes: %d \n",llave);
		idcola=msgget(llave,0600 | IPC_CREAT);
		if (idcola<0)
		{
			perror("Error al obtener el identificador de cola \n");
			exit(EXIT_FAILURE);
		}
		else
		{
			printf("Se ha obtenido el identificador de cola %d \n",idcola);
			i=1;
			while (i<=5)
			{
				sleep(1);
				mensaje.id_mensaje = 1; //Todos los mensajes son del mismo tipo
				mensaje.cliente=getpid(); //Obtenemos el PID del proceso actual cliente
				mensaje.numero=i; //Generamos los numeros consecutivos
				if (msgsnd(idcola,(struct msgbuf *)&mensaje, sizeof(mensaje)-sizeof(long),IPC_NOWAIT)<0)
				{
					printf("Error al escribir en mensaje en la cola");
					printf("ID: %d, Cliente: %d, Numero: %d \n",(int)mensaje.id_mensaje,mensaje.cliente,mensaje.numero);
				}
				else
				{
					printf("Mensaje escrito en la cola ");
                                        printf("ID: %d, Cliente: %d, Numero: %d \n",(int)mensaje.id_mensaje,mensaje.cliente,mensaje.numero);
				}
				i++;
			}
		}
	}

}
